<?php

/**
 * This is the model class for table "{{score}}".
 *
 * The followings are the available columns in table '{{score}}':
 * @property string $score_id
 * @property integer $score
 * @property integer $created_at
 * @property string $user_id
 * @property string $bank_id
 *
 * The followings are the available model relations:
 * @property User $user
 * @property QuestionBank $bank
 */
class Score extends CActiveRecord
{
  /**
   * @return string the associated database table name
   */
  public function tableName()
  {
    return '{{score}}';
  }

  public function defaultScope()
  {
    return array(
        'alias' => 'score'
    );
  }

  /**
   * @return array validation rules for model attributes.
   */
  public function rules()
  {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('score, created_at, user_id, bank_id', 'required'),
        array('score, created_at', 'numerical', 'integerOnly' => true),
        array('user_id, bank_id', 'length', 'max' => 10),
      // The following rule is used by search().
      // @todo Please remove those attributes that should not be searched.
        array('score_id, score, created_at, user_id, bank_id', 'safe', 'on' => 'search'),
    );
  }

  /**
   * @return array relational rules.
   */
  public function relations()
  {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'user' => array(self::BELONGS_TO, 'User', 'user_id'),
        'bank' => array(self::BELONGS_TO, 'QuestionBank', 'bank_id'),
    );
  }

  /**
   * @return array customized attribute labels (name=>label)
   */
  public function attributeLabels()
  {
    return array(
        'score_id' => 'Score',
        'score' => 'Score',
        'created_at' => 'Created At',
        'user_id' => 'User',
        'bank_id' => 'Bank',
    );
  }

  /**
   * Retrieves a list of models based on the current search/filter conditions.
   *
   * Typical usecase:
   * - Initialize the model fields with values from filter form.
   * - Execute this method to get CActiveDataProvider instance which will filter
   * models according to data in model fields.
   * - Pass data provider to CGridView, CListView or any similar widget.
   *
   * @return CActiveDataProvider the data provider that can return the models
   * based on the search/filter conditions.
   */
  public function search()
  {
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria = new CDbCriteria;

    $criteria->compare('score_id', $this->score_id, true);
    $criteria->compare('score', $this->score);
    $criteria->compare('created_at', $this->created_at);
    $criteria->compare('user_id', $this->user_id, true);
    $criteria->compare('bank_id', $this->bank_id, true);

    return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
    ));
  }

  /**
   * Returns the static model of the specified AR class.
   * Please note that you should have this exact method in all your CActiveRecord descendants!
   * @param string $className active record class name.
   * @return Score the static model class
   */
  public static function model($className = __CLASS__)
  {
    return parent::model($className);
  }

  public function onBeforeValidate($event)
  {
    if ($this->isNewRecord) {
      $this->user_id = Yii::app()->user->id;
      $this->created_at = time();
    }
    parent::onBeforeValidate($event); // TODO: Change the autogenerated stub
  }

}
